using System;
using Microsoft.SPOT.Hardware;
using Gadgeteer;

/*
 * Original Gadgeteer framework Copyright (c) Microsoft Corporation. (http://gadgeteer.codeplex.com/)
 * 
 * Gadgeteer Light made by Stefan Thoolen (http://gadgeteerlight.codeplex.com/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
namespace SecretLabs.NETMF.Hardware
{
    public class AnalogIn : AnalogInProvider
    {
        /// <summary>The actual analog input port</summary>
        private SecretLabs.NETMF.Hardware.AnalogInput _port = null;

        /// <summary>Creates a new analog input port</summary>
        /// <param name="socket">The socket on which the port exists</param>
        /// <param name="pin">The pin #</param>
        public override void Init(int socket, int pin)
        {
            this._port = new SecretLabs.NETMF.Hardware.AnalogInput(Board.Hardware.GetPin(socket, pin));
            this._port.SetRange(0, 1024);
        }

        /// <summary>Reads the analog value</summary>
        /// <returns>Value from 0.0 to 1.0</returns>
        public override double ReadProportion()
        {
            return (double)this._port.Read() / 1024;
        }

        /// <summary>Reads the current voltage</summary>
        /// <returns>Value from 0.0 to 3.3</returns>
        public override double ReadVoltage()
        {
            return this.ReadProportion() * 3.3;
        }

        /// <summary>Not in use</summary>
        public override bool Active { get; set; }
    }
}